<!DOCTYPE html>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../assert_selection.js"></script>
<script>
// This layout tests demonstartes the undo command.
for (const platform of ['mac', 'win', 'unix', 'android']) {
  selection_test(
    '<div contenteditable>abc|</div>',
    selection => {
      assert_not_equals(window.internals, undefined,
        'this test requires internals');

      internals.settings.setEditingBehavior(platform);

      const document = selection.document;
      document.execCommand('delete');
      document.execCommand('insertText', false, 'x');
      document.execCommand('delete');
      document.execCommand('undo');
    },
    [
        '<div contenteditable>',
        platform === 'mac'
          ? 'ab|x^'
          : 'abx|',
        '</div>'
    ],
    `${platform}: undo on delete insert delete`);

  selection_test(
    '<div contenteditable>abx|</div>',
    selection => {
      assert_not_equals(window.internals, undefined,
        'this test requires internals');

      internals.settings.setEditingBehavior(platform);

      const document = selection.document;
      document.execCommand('insertText', false, 'y');
      document.execCommand('delete');
      document.execCommand('undo');
    },
    [
        '<div contenteditable>',
        platform === 'mac'
          ? 'abx|y^'
          : 'abxy|',
        '</div>'
    ],
    `${platform}: undo on delete insert delete.`);
}
</script>
